home *** CD-ROM | disk | FTP | other *** search
- #ifdef COMMENT
- Die Funktion system ruft eine SHELL auf. Uebergeben wird das
- auszufuehrende Kommando. Soll die Shell interaktive Eingaben
- verarbeiten, so wird "-i" uebergeben.
- Falls die Environment-Variable $SHELL gesetzt ist und einen
- Wert hat, der vom Leerstring verschieden ist, so wird dieses
- Programm aufgerufen. Ansonst wird ein Direktaufruf von Master
- probiert.
- #endif COMMENT
-
- #include <osbind.h>
-
- #define DEFAULT_SHELL "\\Master\\Master.Prg"
- #define MASTER_MAGIC 0x4D415354L
-
- int
- system(com)
- char *com;
- {
- char tail[128];
- char *shell;
- long **_shell_p = (long **) 0x4f6L;
- long *ptr;
- int (*master)();
- long ssp;
- extern char *getenv();
-
- if(!com) com = "-i";
- if(!(shell = getenv("SHELL")) shell = DEFAULT_SHELL;
- if(!*shell) {
- ssp = Super(0L);
- ptr = *_shell_p;
- Super(ssp);
- if(*(ptr-2) == MASTER_MAGIC) {
- master = (int (*)) ptr;
- return((*master)(com));
- }
- }
- strncat(&tail[1],com,126);
- tail[126] = '\r';
- tail[127] = '\0';
- tail[0] = strlen(&tail[1])-1;
- return(Pexec(0,shell,tail,(char *)0));
- }
-